/**
 * redux 一个独立的 Javascript 状态管理库
 * 
 * react 本身是MVVM渐进式框架（M(model 数据模型) - V(view 视图) - VM(虚拟模型)）
 * 
 * createStore(reducer[, preloadedState, enhancer])
 * preloadedState 初始state
 * enhancer 组合 高阶函数
 * 
 * redux核心概念
 * - state
 *  - state 存储到一个对象树统一管理状态
 *  - state是只读的，不能直接修改state，只能通过纯函数修改
 * - reducer 纯函数
 *  - 相同的输入永远返回相同的输出
 *  - 不能修改输入值
 *  - 不依赖外部环境状态
 *  - 无副作用
 * - action 修改state
 *  - type 进行操作的动作类型，增删改查
 *  - payload 操作 state 的同时传入的数据
 * - store
 *  - getState() 获取当前store中的state
 *  - dispatch(action) 修改state
 *  - subscribe(listener) 监听state
 *  - replaceReducer(nextReducer) 替换原来的reducer
 * - combineReducers(reducers) 将多个reducer拆分
 * - applyMiddleware(...middlewares) 中间件
 */